/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package myftp.app.view;

import java.awt.Dimension;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import myftp.core.view.AbstractView;

/**
 *
 * @author CAVARLE Glenn, LUCAS Stéphane
 * Vue du prompt serveur
 */
public class PromptPartView extends AbstractView {

    /**
     * Zone contenant les messages reçus des serveurs
     * @var promptArea
     */
    JTextArea promptArea = new JTextArea();

    public PromptPartView init() {

        //this.addComponentListener(new ViewListener());
        this.promptArea.setRows(3);
        this.promptArea.setEditable(false);

        JScrollPane scrollpane = new JScrollPane(this.promptArea);
        scrollpane.setVerticalScrollBarPolicy(
                JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        scrollpane.setPreferredSize(new Dimension(1000, 200));
        this.promptArea.addComponentListener(new PromptScrollListener(scrollpane));
        scrollpane.addComponentListener(new ViewListener(this));
        this.add(scrollpane);

        this.invalidate();
        return this;
    }

    /**
     * Ecriture du message dans le JTextArea du prompt
     * @param message
     */
    public void appendText(String message) {
        this.promptArea.append(message + "\n");
    }

    /**
     * Listener pour l'autoscrolling du prompt
     */
    private class PromptScrollListener implements ComponentListener {

        private JScrollPane pane;

        PromptScrollListener(JScrollPane pane) {
            this.pane = pane;
        }

        public void componentResized(ComponentEvent e) {
            /* Mise au maximum de la barre de défilement verticale */
            JTextArea text = (JTextArea) e.getSource();
            JScrollBar bar = this.pane.getVerticalScrollBar();
            text.getDocument().getLength();
            bar.setValue(bar.getMaximum());
        }

        public void componentMoved(ComponentEvent e) {
        }

        public void componentShown(ComponentEvent e) {
        }

        public void componentHidden(ComponentEvent e) {
        }
    }
}
